
/**
 * @brief    Overrides default values of parameters used in design optimization.
 *
 * @version  0.1
 * @author   wuxingchuang
 * @date     2025.04.11
 *          _
 *      ___| |__   ___ _ __   __ _  ___  _ __   __ _
 *     / __| '_ \ / _ \ '_ \ / _` |/ _ \| '_ \ / _` |
 *     \__ \ | | |  __/ | | | (_| | (_) | | | | (_| |
 *     |___/_| |_|\___|_| |_|\__, |\___/|_| |_|\__, |
 *                           |___/             |___/
 * @copyright (c) 2024 by 神工仿真, All Rights Reserved.
 */
#pragma once
#include "DataStructure/Common/Id.h"
#include "DataStructure/Common/Real.h"
#include "DataStructure/Input/Design/DesignBase.h"

SG_DATASTRUCTURE_FEM_NAMESPACE_OPEN

struct DOPTPRMData {
  SG::DataStructure::Common::I64 m_APRCOD = 0;      ///<
  SG::DataStructure::Common::I64 m_IPRINT = 0;      ///<
  SG::DataStructure::Common::I64 m_DESMAX = 0;      ///<
  SG::DataStructure::Common::I64 m_METHOD = 0;      ///<
  SG::DataStructure::Common::Real m_DELP = 0.0;     ///<
  SG::DataStructure::Common::Real m_DPMIN = 0.0;    ///<
  SG::DataStructure::Common::Real m_PTOL = 0.0;     ///<
  SG::DataStructure::Common::Real m_CONV1 = 0.0;    ///<
  SG::DataStructure::Common::Real m_CONV2 = 0.0;    ///<
  SG::DataStructure::Common::Real m_GMAX = 0.0;     ///<
  SG::DataStructure::Common::Real m_DELX = 0.0;     ///<
  SG::DataStructure::Common::Real m_DXMIN = 0.0;    ///<
  SG::DataStructure::Common::Real m_DELB = 0.0;     ///<
  SG::DataStructure::Common::Real m_GSCAL = 0.0;    ///<
  SG::DataStructure::Common::Real m_CONVDV = 0.0;   ///<
  SG::DataStructure::Common::Real m_CONVPR = 0.0;   ///<
  SG::DataStructure::Common::I64 m_P1 = 0;          ///<
  SG::DataStructure::Common::I64 m_P2 = 0;          ///<
  SG::DataStructure::Common::Real m_CT = 0.0;       ///<
  SG::DataStructure::Common::Real m_CTMIN = 0.0;    ///<
  SG::DataStructure::Common::Real m_DABOBJ = 0.0;   ///<
  SG::DataStructure::Common::Real m_DELOBJ = 0.0;   ///<
  SG::DataStructure::Common::Real m_DOBJ1 = 0.0;    ///<
  SG::DataStructure::Common::Real m_DOBJ2 = 0.0;    ///<
  SG::DataStructure::Common::Real m_DX1 = 0.0;      ///<
  SG::DataStructure::Common::Real m_DX2 = 0.0;      ///<
  SG::DataStructure::Common::I64 m_ISCAL = 0;       ///<
  SG::DataStructure::Common::I64 m_ITMAX = 0;       ///<
  SG::DataStructure::Common::I64 m_ITRMOP = 0;      ///<
  SG::DataStructure::Common::I64 m_IWRITE = 0;      ///<
  SG::DataStructure::Common::I64 m_IGMAX = 0;       ///<
  SG::DataStructure::Common::I64 m_JTMAX = 0;       ///<
  SG::DataStructure::Common::I64 m_ITRMST = 0;      ///<
  SG::DataStructure::Common::I64 m_JPRINT = 0;      ///<
  SG::DataStructure::Common::I64 m_IPRNT1 = 0;      ///<
  SG::DataStructure::Common::I64 m_IPRNT2 = 0;      ///<
  SG::DataStructure::Common::I64 m_JWRITE = 0;      ///<
  SG::DataStructure::Common::Real m_STPSCL = 0.0;   ///<
  SG::DataStructure::Common::I64 m_FSDMAX = 0;      ///<
  SG::DataStructure::Common::Real m_FSDALP = 0.0;   ///<
  SG::DataStructure::Common::I64 m_DISCOD = 0;      ///<
  SG::DataStructure::Common::I64 m_DISBEG = 0;      ///<
  SG::DataStructure::Common::I64 m_PLVIOL = 0;      ///<
  SG::DataStructure::Common::I64 m_P2CR = 0;        ///<
  SG::DataStructure::Common::I64 m_P2CDDV = 0;      ///<
  SG::DataStructure::Common::I64 m_P2CP = 0;        ///<
  SG::DataStructure::Common::I64 m_P2CC = 0;        ///<
  SG::DataStructure::Common::I64 m_P2CM = 0;        ///<
  SG::DataStructure::Common::I64 m_P2CBL = 0;       ///<
  SG::DataStructure::Common::I64 m_P2RSET = 0;      ///<
  SG::DataStructure::Common::I64 m_P2CALL = 0;      ///<
  SG::DataStructure::Common::I64 m_ADSCOD = 0;      ///<
  SG::DataStructure::Common::Real m_PENAL = 0.0;    ///<
  SG::DataStructure::Common::Real m_DRATIO = 0.0;   ///<
  SG::DataStructure::Common::I64 m_AUTOSE = 0;      ///<
  SG::DataStructure::Common::I64 m_NUMDIV = 0;      ///<
  SG::DataStructure::Common::I64 m_TCHECK = 0;      ///<
  SG::DataStructure::Common::Real m_TDMIN = 0.0;    ///<
  SG::DataStructure::Common::Real m_TFWET = 0.0;    ///<
  SG::DataStructure::Common::I64 m_TREGION = 0;     ///<
  SG::DataStructure::Common::Real m_EATA1 = 0.0;    ///<
  SG::DataStructure::Common::Real m_EATA2 = 0.0;    ///<
  SG::DataStructure::Common::Real m_EATA3 = 0.0;    ///<
  SG::DataStructure::Common::Real m_UPDFAC1 = 0.0;  ///<
  SG::DataStructure::Common::Real m_UPDFAC2 = 0.0;  ///<
  SG::DataStructure::Common::Real m_DPMAX = 0.0;    ///<
  SG::DataStructure::Common::Real m_DXMAX = 0.0;    ///<
  char m_OPTCOD[8] = {0};                           ///<
  SG::DataStructure::Common::I64 m_OBJMOD = 0;      ///<
  SG::DataStructure::Common::Real m_DELXESL = 0.0;  ///<
  SG::DataStructure::Common::I64 m_DSMXESL = 0;     ///<
  SG::DataStructure::Common::I64 m_NASPR0 = 0;      ///<
  SG::DataStructure::Common::I64 m_LSCOD = 0;       ///<
  SG::DataStructure::Common::Id m_domainId = 0;     ///<
};

///< @brief 判断数据是否相等
DECLSPEC bool operator==(const DOPTPRMData& val1, const DOPTPRMData& val2);

SG_DATASTRUCTURE_FEM_NAMESPACE_CLOSE
